from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
from rest_framework.views import APIView
from rest_framework.response import Response
from apps.AboutXdy  .task import send_email_task

from .models import ImageModel, VisitorInfo
from ..utils.response_utils import api_response, ResponseCode


class ToKnowXdy(APIView):
    """
    了解翔东渝
    """
    @swagger_auto_schema(
        operation_description="了解翔东渝,根据 category 区别小板块：1 我们是谁；2 成立背景；3 企业核心精神；4 团队风采；5 发展与规划",
        responses={
            200: openapi.Response(
                description="访问成功！",
                schema=openapi.Schema(
                    type=openapi.TYPE_OBJECT,
                    properties={
                        "code": openapi.Schema(type=openapi.TYPE_INTEGER, description="状态码"),
                        "message": openapi.Schema(type=openapi.TYPE_STRING, description="返回信息"),
                        "data": openapi.Schema(
                            type=openapi.TYPE_ARRAY,
                            items=openapi.Schema(
                                type=openapi.TYPE_OBJECT,
                                properties={
                                    "name": openapi.Schema(type=openapi.TYPE_STRING, description="图片名称"),
                                    "url": openapi.Schema(type=openapi.TYPE_STRING, description="图片路径"),
                                    "description": openapi.Schema(type=openapi.TYPE_STRING, description="文字内容"),
                                }
                            ),
                            description="图片列表"
                        )
                    }
                )
            ),
            500: openapi.Response(description="服务器内部错误")
        },
        tags=["关于翔东渝"]
    )
    def get(self, request, **kwargs):
        data = {}
        try:
            # 根据 category 获取图片数据
            category = kwargs.get("category")
            images = ImageModel.objects.filter(category=category)
            image_data = [{"name": img.name, "url": img.image_path} for img in images]
            # 添加额外的文字信息
            if int(category) == 1:
                data = {
                    "images": image_data,
                    "description": """翔东渝是一家创新型跨境电商企业，总部位于重庆，拥有深圳和广州分公司。公司专注于TikTok平台的全链路电商运营与内容创作，致力于帮助品牌在全球市场实现快速增长
公司目前拥有240余名员工，办公面积达1000平米的5A级写字楼，同时设有中央拍摄基地。我们构建了高效的人才体系，通过重庆与深圳的协同合作，灵活应对市场变化持续推动跨境电商和内容创作的创新与发展。
翔东渝不断拓展全球业务，依托先进的AIGC技术和专业的运营团队，为客户提供全方位的跨境电商服务，推动企业全球化布局。
重庆市跨境电子商务协会(跨协)于2024年5月23日成立，翔东渝在同年7月成为常务理事单位，积极协同推动西南地区跨境电商的发展。
跨协致力于紧跟国家及地方政策动态，争取跨境电商政策红利，优化营商环境，降低企业运营成本并提升行政效率。此外，协会还整合行业资源，打造全方位服务体系，通过云计算、AI、大数据等现代技术，提升企业出海精准对接和品牌推广的能力，跨协积极与高等院校及培训机构合作，培养具备国际视野的跨境电商复合型人才。
通过组织企业参加国内外展会，深化与“一带一路沿线国家的合作，推动跨境电商的国际市场拓展与合作机制建设，助力区域内企业走向全球市场。
                    """
                }
            elif int(category) == 2:
                data = {
                    "images": image_data,
                    "description":[{"title":"用户基数庞大", "texts":"TikTok全球下载量超20亿，覆盖200多个国家和地区，用户群体庞大。其以年轻人为主，他们消费能力强、消费意愿高且乐于尝试新品牌和产品，是跨境电商的理想目标客户，能为跨境电商提供广阔的市场空间。"},
                                   {"title":"全球化的商业布局与机遇", "texts":"TikTok在全球范围内拥有庞大的用户群体，这为跨境电商带来了跨越地域限制的商业机遇。通过TikTok，跨境电商可以轻松触达全球多个市场，实现品牌国际化。"},
                                   {"title":"政府扶持项目", "texts":"重庆政府为推动跨境电商高质量发展，出台了一系列扶持项目：引育壮大跨境电商主体、强化跨境电商品牌建设、支持跨境电商产业园区建设、推动跨境电商产业带建设。"},
                                   ]
                }
            elif int(category) == 3:
                data = {
                    "title":"精神基石与前进方向",
                    "description":["1、企业愿景：成为全球领先跨境电商平台，推动西南企业全球化发展", "2、企业价值观：创新、诚信、协作、共创价值", "3、企业使命：利用技术和服务，助力客户实现全球市场突破"]
                }
            elif int(category) == 4:
                data = {
                    "images": image_data,
                    "description": """翔东渝的团队是由一群经验丰富、创新驱动的行业精英组成，他们在跨境电商和内容创作领域展现出卓越的专业能力和强大的执行力。我们秉持“创新、协作、高效”的文化理念，以开放的心态、敏锐的市场洞察力和灵活的战略应变能力，快速应对市场的变化和客户的需求。团队不仅注重个人能力的提升，更重视跨部门协作与沟通，确保公司各项战略的顺利执行。在全球化的布局中，我们始终以全球视野为导向，依托行业领先的技术、工具与资源，推动公司从西南市场走向国际舞台。翔东渝的团队是一支敢于挑战、善于创新、勇于突破的团队，每一位成员都为公司的成功发展贡献着智慧与力量，携手迈向更加辉煌的未来。"""
                }
            elif int(category) == 5:
                data = [{"title":"发展目标", "texts":["成立初期：确认业务方向，专注于tiktok内容孵化，0-1账号搭建，短视频带货，开启企业第一项发展业务","发展阶段：成立专项带货、数据分析团队通过数据分析研发爆款热门赛道爆品趋势，选品逻辑，做好内容打磨打造精细化高效团队","拓宽业务：多个官方项目、团队合作，拓宽企业发展链路，深入店铺运营、广告投流、达人建联，打造为一站式解决方案的综合型企业"]},
                        {"title":"育商赋能", "texts":["参与各项活动，深入了解平台政策，深挖各项业务流程，理论知识，转化为自有内容，为官方提供更优质的育商方式为商家提供完整学习链路。"]},
                        ]
            else:
                return api_response(ResponseCode.INTERNAL_SERVER_ERROR, "访问失败！")

            return api_response(ResponseCode.SUCCESS, "访问成功！", data)
        except Exception as e:
            return api_response(ResponseCode.INTERNAL_SERVER_ERROR, str(e))



class ContactUs(APIView):
    """
    联系我们
    """
    @swagger_auto_schema(
        operation_description="联系我们, category 为 6",
        responses={
            200: openapi.Response(
                description="访问成功！",
                schema=openapi.Schema(
                    type=openapi.TYPE_OBJECT,
                    properties={
                        "code": openapi.Schema(type=openapi.TYPE_INTEGER, description="状态码"),
                        "message": openapi.Schema(type=openapi.TYPE_STRING, description="返回信息"),
                        "data": openapi.Schema(
                            type=openapi.TYPE_ARRAY,
                            items=openapi.Schema(
                                type=openapi.TYPE_OBJECT,
                                properties={
                                    "name": openapi.Schema(type=openapi.TYPE_STRING, description="图片名称"),
                                    "url": openapi.Schema(type=openapi.TYPE_STRING, description="图片路径"),
                                    "description": openapi.Schema(type=openapi.TYPE_STRING, description="文字内容"),
                                }
                            ),
                            description="图片列表"
                        )
                    }
                )
            ),
            500: openapi.Response(description="服务器内部错误")
        },
        tags=["关于翔东渝"]
    )
    def get(self, request, **kwargs):
        try:
            # 根据 category 获取图片数据
            category = kwargs.get("category")
            images = ImageModel.objects.filter(category=category)
            image_data = [{"name": img.name, "url": img.image_path} for img in images]
            # 添加额外的文字信息
            if int(category) == 6:
                data = {
                    "images": image_data,
                    "description":[{"title":"商务合作", "texts":"李女士：18696969009"}]
                }
            else:
                return api_response(ResponseCode.INTERNAL_SERVER_ERROR, "访问失败！")

            return api_response(ResponseCode.SUCCESS, "访问成功！", data)
        except Exception as e:
            return api_response(ResponseCode.INTERNAL_SERVER_ERROR, str(e))



class SubmitInfo(APIView):
    """
    提交信息
    """
    @swagger_auto_schema(
        operation_description="来访人员提交信息",
        request_body=openapi.Schema(
            type=openapi.TYPE_OBJECT,
            properties={
                "requirement_type": openapi.Schema(
                    type=openapi.TYPE_INTEGER,
                    description="需求类型 1：合作咨询，2：空间入驻，3：政策申报",
                    enum=[1, 2, 3]
                ),
                "name": openapi.Schema(type=openapi.TYPE_STRING, description="姓名"),
                "phone": openapi.Schema(type=openapi.TYPE_STRING, description="手机"),
                "email": openapi.Schema(type=openapi.TYPE_STRING, description="邮箱"),
                "company": openapi.Schema(type=openapi.TYPE_STRING, description="单位"),
                "city": openapi.Schema(type=openapi.TYPE_STRING, description="城市"),
                "requirement_description": openapi.Schema(type=openapi.TYPE_STRING, description="需求描述"),
            }
        ),
        responses={
            200: openapi.Response(
                description="提交成功！",
                schema=openapi.Schema(type=openapi.TYPE_OBJECT, properties={
                    "message": openapi.Schema(type=openapi.TYPE_STRING, description="返回消息")
                })
            ),
            500: openapi.Response(
                description="服务器内部错误",
                schema=openapi.Schema(type=openapi.TYPE_OBJECT, properties={
                    "error": openapi.Schema(type=openapi.TYPE_STRING, description="错误信息")
                })
            ),
        },
        tags=["关于翔东渝"]
    )
    def post(self, request):
        try:
            # 获取请求参数
            requirement_type = request.data.get("requirement_type")
            name = request.data.get("name")
            phone = request.data.get("phone")
            email = request.data.get("email")
            company = request.data.get("company")
            city = request.data.get("city")
            requirement_description = request.data.get("requirement_description")
            visitor_info = VisitorInfo.objects.create(
                requirement_type=requirement_type,
                name=name,
                phone=phone,
                email=email,
                company=company,
                city=city,
                requirement_description=requirement_description
            )
            subject = '客户来啦'
            message = f'刚刚{name}在公司官网留下了足迹，这是他的联系方式：{phone}，邮箱是：{email}'

            target_email = '1639972003@qq.com'
            # 异步发送邮件
            send_email_task.delay(target_email, subject, message)

            return api_response(ResponseCode.SUCCESS, "提交成功！")
        except Exception as e:
            return api_response(ResponseCode.INTERNAL_SERVER_ERROR, str(e))